﻿using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Model
{
    [Table("Batch")]
    public class Batch
    {
        private int _batchId;
        private int _productId;
        private int _workOrderId;
        private int _totalProcessId;
        private string _batchType;
        private int _quantity;
        private int _subQuantity;
        private int _goodQuantity;
        private int _ngQuantity;
        private string _unit;
        private string _lockStatus;
        private string _eventName;
        private string _eventUser;
        private DateTime _eventTime;
        private string _eventRemarks;
        //private string inOutBandStatus;
        //private string inOutBandStatus;
        // 批次 ID（主键）
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int BatchId
        {
            set { _batchId = value; }
            get { return _batchId; }
        }

        // 产品 ID（外键）
        [Required]
        public int ProductId
        {
            set { _productId = value; }
            get { return _productId; }
        }

        // 工单 ID（外键）
        [Required]
        public int WorkOrderId
        {
            set { _workOrderId = value; }
            get { return _workOrderId; }
        }

        // 总流程 ID（外键）
        [Required]
        public int TotalProcessId
        {
            set { _totalProcessId = value; }
            get { return _totalProcessId; }
        }

        // 批次类型（非空，默认 finishProduct）
        [Required]
        [StringLength(50)]
        public string BatchType
        {
            set { _batchType = value; }
            get { return _batchType; }
        }

        // 数量（非空）
        [Required]
        public int Quantity
        {
            set { _quantity = value; }
            get { return _quantity; }
        }

        // 子数量（非空）
        [Required]
        public int SubQuantity
        {
            set { _subQuantity = value; }
            get { return _subQuantity; }
        }

        // Good 数量（非空）
        [Required]
        public int GoodQuantity
        {
            set { _goodQuantity = value; }
            get { return _goodQuantity; }
        }

        // NG 数量（非空）
        [Required]
        public int NGQuantity
        {
            set { _ngQuantity = value; }
            get { return _ngQuantity; }
        }

        // 单位（非空）
        [Required]
        [StringLength(50)]
        public string Unit
        {
            set { _unit = value; }
            get { return _unit; }
        }

        // 锁定状态（非空，默认未锁定）
        [Required]
        [StringLength(50)]
        public string LockStatus
        {
            set { _lockStatus = value; }
            get { return _lockStatus; }
        }

        // 事件名称（非空）
        [Required]
        [StringLength(255)]
        public string EventName
        {
            set { _eventName = value; }
            get { return _eventName; }
        }

        // 事件用户（非空）
        [Required]
        [StringLength(255)]
        public string EventUser
        {
            set { _eventUser = value; }
            get { return _eventUser; }
        }

        // 事件发生时间（非空）
        [Required]
        public DateTime EventTime
        {
            set { _eventTime = value; }
            get { return _eventTime; }
        }

        // 事件备注（可空）
        public string EventRemarks
        {
            set { _eventRemarks = value; }
            get { return _eventRemarks; }
        }

        // 构造函数
        public Batch()
        {
            BatchType = "finishProduct"; // 默认值
            LockStatus = "Wait";       // 默认值
        }
    }
}